package model;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;

public class Ejercicios {
    
    public double precioLibro(String isbn){
        
        Session s = SessionManager.getSessionFactory().openSession();
        
        Query q = s.createQuery("from Libro l where l.isbn = :isbn");
        
        q.setParameter("isbn", isbn);
        
        return ((Libro) q.uniqueResult()).getPrecioFinal();
    }
    
    public static void main(String[] args) {
        System.out.println(new Ejercicios().precioLibro("l4o9"));
        System.out.println(new Ejercicios().getLibrosFromDeposito(1));
        System.out.println(new Ejercicios().isLibroInDeposito(new Externo(), 4));
        System.out.println(new Ejercicios().getLibrosFromProveedor(4));
    }
    
    public Boolean isLibroInDeposito(Libro libro, int nroDeposito){
        return getLibrosFromDeposito(nroDeposito).contains(libro);
    }
    
    public List<Libro> getLibrosFromDeposito(int nroDeposito){
        Session s = SessionManager.getSessionFactory().openSession();
        
        Query q = s.createQuery("from Deposito d where d.nroDeposito = :nroDeposito");
        
        q.setParameter("nroDeposito", nroDeposito);
        
        return ((Deposito) q.uniqueResult()).getLibros();
    }
    
    @SuppressWarnings("unchecked")
    public List<Libro> getLibrosFromProveedor(int idProveedor){
        Session s = SessionManager.getSessionFactory().openSession();
        
        Query q = s.createQuery("from Libro l where l.proveedor.idEmpresa = :idProveedor");
        
        q.setParameter("idProveedor", idProveedor);
        
        return q.list();
        
        
    }
}


